c++问题```

来源:百度知道 编辑:UC知道 时间:2024/06/20 16:40:43
题目是要求字符串中a,e,i,o,u出现的次数```我的代码是
#include <iostream.h>
#include <stdio.h>
#include <string.h>
int main()
{ int n,a,num1,num2,num3,num4,num5,i; char c[200];
cin>>n;
getchar();
while(n--)
{
num1=0;num2=0;num3=0;num4=0;num5=0;
gets(c);
a=strlen(c);
cout<<c[0]<<" "<<c[1]<<" "<<a<<endl;
for(i=1;i<=a;i++)
{
if(c[i]=='a')
num1++;
if(c[i]=='e')
num2++;
if(c[i]=='i')
num3++;
if(c[i]=='o')
num4++;
if(c[i]=='u')
num5++;

}
cout<<"a:"<<num1<<endl;
cout<<"e:"<<num2<<endl;
cout<<"i:"<<num3<<endl;
cout<<"o:"<<num4<<endl;
cout<<"u:"<

把cin>>n; 之后的getchar(); 去掉,你的本意是读取输入n后的换行符,但这个工作被后来的gets(c);搞定了,gets(c)忽略换行符,如果不删除getchar(); ,由于getchar()要读取一个非换行符的字符,就跳过了缓冲区的换行符,读取了输入字符串中的第一个字符,导致c[0]不是期望中的那个字符,而是第二个字符

#include <iostream.h>
#include <stdio.h>
#include <string.h>
int main()
{ int n,a,num1,num2,num3,num4,num5,i; char c[200];
cin>>n;
getchar();
while(n--)
{
num1=0;num2=0;num3=0;num4=0;num5=0;
gets(c);
a=strlen(c);
cout<<c[0]<<" "<<c[1]<<" "<<a<<endl;
for(i=0;i<a;i++) //i=0开始,第一个字符的下标为0不是1
{
if(c[i]=='a')
num1++;
if(c[i]=='e')
num2++;
if(c[i]=='i')
num3++;
if(c[i]=='o')
num4++;
if(c[i]=='u')
num5++;

}
cout<<"a:"<<num1<<endl;
cout<<"e:"<<num2<<endl;
cout<<&